package com.mareas.web.model;

// Generated 03/12/2011 14:18:06 by Hibernate Tools 3.4.0.CR1

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Operacion generated by hbm2java
 */
@Entity
@Table(name = "operacion", catalog = "mareasdb")
public class Operacion implements java.io.Serializable {

	private Integer operacionId;
	private Buque buque;
	private Cliente cliente;
	private AgenciaNacional agenciaNacional;
	private String operacionTipo;
	private String operacionExportacionImportacion;
	private String operacionTiempoEstadia;
	private Date operacionFecha;
	private String operacionCargaDescarga;
	private String operacionOrigen;
	private String operacionDestino;
	private BigDecimal operacionCostoTotal;
	private String operacionObservaciones;
	private Integer operacionEstado;
	private Set<Sof> sofs = new HashSet<Sof>(0);
	private Set<Proforma> proformas = new HashSet<Proforma>(0);
	private Set<Operador> operadors = new HashSet<Operador>(0);
	private Set<Pago> pagos = new HashSet<Pago>(0);
	private Set<Item> items = new HashSet<Item>(0);
	private Set<Solucitud> solucituds = new HashSet<Solucitud>(0);
	private Set<OperacionProducto> operacionProductos = new HashSet<OperacionProducto>(
			0);
	private Set<Datossalida> datossalidas = new HashSet<Datossalida>(0);
	private Set<Consulta> consultas = new HashSet<Consulta>(0);
	private Set<Compra> compras = new HashSet<Compra>(0);
	private Set<Datosarribo> datosarribos = new HashSet<Datosarribo>(0);

	public Operacion() {
	}

	public Operacion(Buque buque, Cliente cliente,
			AgenciaNacional agenciaNacional) {
		this.buque = buque;
		this.cliente = cliente;
		this.agenciaNacional = agenciaNacional;
	}

	public Operacion(Buque buque, Cliente cliente,
			AgenciaNacional agenciaNacional, String operacionTipo,
			String operacionExportacionImportacion,
			String operacionTiempoEstadia, Date operacionFecha,
			String operacionCargaDescarga, String operacionOrigen,
			String operacionDestino, BigDecimal operacionCostoTotal,
			String operacionObservaciones, Integer operacionEstado,
			Set<Sof> sofs, Set<Proforma> proformas, Set<Operador> operadors,
			Set<Pago> pagos, Set<Item> items, Set<Solucitud> solucituds,
			Set<OperacionProducto> operacionProductos,
			Set<Datossalida> datossalidas, Set<Consulta> consultas,
			Set<Compra> compras, Set<Datosarribo> datosarribos) {
		this.buque = buque;
		this.cliente = cliente;
		this.agenciaNacional = agenciaNacional;
		this.operacionTipo = operacionTipo;
		this.operacionExportacionImportacion = operacionExportacionImportacion;
		this.operacionTiempoEstadia = operacionTiempoEstadia;
		this.operacionFecha = operacionFecha;
		this.operacionCargaDescarga = operacionCargaDescarga;
		this.operacionOrigen = operacionOrigen;
		this.operacionDestino = operacionDestino;
		this.operacionCostoTotal = operacionCostoTotal;
		this.operacionObservaciones = operacionObservaciones;
		this.operacionEstado = operacionEstado;
		this.sofs = sofs;
		this.proformas = proformas;
		this.operadors = operadors;
		this.pagos = pagos;
		this.items = items;
		this.solucituds = solucituds;
		this.operacionProductos = operacionProductos;
		this.datossalidas = datossalidas;
		this.consultas = consultas;
		this.compras = compras;
		this.datosarribos = datosarribos;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "Operacion_ID", unique = true, nullable = false)
	public Integer getOperacionId() {
		return this.operacionId;
	}

	public void setOperacionId(Integer operacionId) {
		this.operacionId = operacionId;
	}

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "Buque_IMO", nullable = false)
	public Buque getBuque() {
		return this.buque;
	}

	public void setBuque(Buque buque) {
		this.buque = buque;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "Cliente_ID", nullable = false)
	public Cliente getCliente() {
		return this.cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "AgenciaNacional_ID", nullable = false)
	public AgenciaNacional getAgenciaNacional() {
		return this.agenciaNacional;
	}

	public void setAgenciaNacional(AgenciaNacional agenciaNacional) {
		this.agenciaNacional = agenciaNacional;
	}

	@Column(name = "Operacion_Tipo", length = 31)
	public String getOperacionTipo() {
		return this.operacionTipo;
	}

	public void setOperacionTipo(String operacionTipo) {
		this.operacionTipo = operacionTipo;
	}

	@Column(name = "Operacion_Exportacion_Importacion", length = 11)
	public String getOperacionExportacionImportacion() {
		return this.operacionExportacionImportacion;
	}

	public void setOperacionExportacionImportacion(
			String operacionExportacionImportacion) {
		this.operacionExportacionImportacion = operacionExportacionImportacion;
	}

	@Column(name = "Operacion_Tiempo_estadia", length = 10)
	public String getOperacionTiempoEstadia() {
		return this.operacionTiempoEstadia;
	}

	public void setOperacionTiempoEstadia(String operacionTiempoEstadia) {
		this.operacionTiempoEstadia = operacionTiempoEstadia;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "Operacion_Fecha", length = 10)
	public Date getOperacionFecha() {
		return this.operacionFecha;
	}

	public void setOperacionFecha(Date operacionFecha) {
		this.operacionFecha = operacionFecha;
	}

	@Column(name = "Operacion_Carga_Descarga", length = 8)
	public String getOperacionCargaDescarga() {
		return this.operacionCargaDescarga;
	}

	public void setOperacionCargaDescarga(String operacionCargaDescarga) {
		this.operacionCargaDescarga = operacionCargaDescarga;
	}

	@Column(name = "Operacion_Origen", length = 30)
	public String getOperacionOrigen() {
		return this.operacionOrigen;
	}

	public void setOperacionOrigen(String operacionOrigen) {
		this.operacionOrigen = operacionOrigen;
	}

	@Column(name = "Operacion_Destino", length = 30)
	public String getOperacionDestino() {
		return this.operacionDestino;
	}

	public void setOperacionDestino(String operacionDestino) {
		this.operacionDestino = operacionDestino;
	}

	@Column(name = "Operacion_CostoTotal", precision = 8)
	public BigDecimal getOperacionCostoTotal() {
		return this.operacionCostoTotal;
	}

	public void setOperacionCostoTotal(BigDecimal operacionCostoTotal) {
		this.operacionCostoTotal = operacionCostoTotal;
	}

	@Column(name = "Operacion_Observaciones", length = 65535)
	public String getOperacionObservaciones() {
		return this.operacionObservaciones;
	}

	public void setOperacionObservaciones(String operacionObservaciones) {
		this.operacionObservaciones = operacionObservaciones;
	}

	@Column(name = "Operacion_Estado")
	public Integer getOperacionEstado() {
		return this.operacionEstado;
	}

	public void setOperacionEstado(Integer operacionEstado) {
		this.operacionEstado = operacionEstado;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "operacion")
	public Set<Sof> getSofs() {
		return this.sofs;
	}

	public void setSofs(Set<Sof> sofs) {
		this.sofs = sofs;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "operacion")
	public Set<Proforma> getProformas() {
		return this.proformas;
	}

	public void setProformas(Set<Proforma> proformas) {
		this.proformas = proformas;
	}

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "operacion_operador", catalog = "mareasdb", joinColumns = { @JoinColumn(name = "Operacion_ID", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "Operacion_Operador_ID", nullable = false, updatable = false) })
	public Set<Operador> getOperadors() {
		return this.operadors;
	}

	public void setOperadors(Set<Operador> operadors) {
		this.operadors = operadors;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "operacion")
	public Set<Pago> getPagos() {
		return this.pagos;
	}

	public void setPagos(Set<Pago> pagos) {
		this.pagos = pagos;
	}

	@ManyToMany(fetch = FetchType.LAZY, mappedBy = "operacions")
	public Set<Item> getItems() {
		return this.items;
	}

	public void setItems(Set<Item> items) {
		this.items = items;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "operacion")
	public Set<Solucitud> getSolucituds() {
		return this.solucituds;
	}

	public void setSolucituds(Set<Solucitud> solucituds) {
		this.solucituds = solucituds;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "operacion")
	public Set<OperacionProducto> getOperacionProductos() {
		return this.operacionProductos;
	}

	public void setOperacionProductos(Set<OperacionProducto> operacionProductos) {
		this.operacionProductos = operacionProductos;
	}

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "operacion")
	public Set<Datossalida> getDatossalidas() {
		return this.datossalidas;
	}

	public void setDatossalidas(Set<Datossalida> datossalidas) {
		this.datossalidas = datossalidas;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "operacion")
	public Set<Consulta> getConsultas() {
		return this.consultas;
	}

	public void setConsultas(Set<Consulta> consultas) {
		this.consultas = consultas;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "operacion")
	public Set<Compra> getCompras() {
		return this.compras;
	}

	public void setCompras(Set<Compra> compras) {
		this.compras = compras;
	}

	@OneToMany(fetch = FetchType.EAGER, mappedBy = "operacion")
	public Set<Datosarribo> getDatosarribos() {
		return this.datosarribos;
	}

	public void setDatosarribos(Set<Datosarribo> datosarribos) {
		this.datosarribos = datosarribos;
	}

}
